package com.example.chamberlainserver.dto;

import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;

/**
 * 分页查询基础类，所有需要分页的查询DTO都可以继承此类
 */
@Data
public class BasePageQuery {
    
    /**
     * 当前页码，从1开始
     */
    @Min(value = 1, message = "页码最小为1")
    private Integer pageNum = 1;
    
    /**
     * 每页记录数
     */
    @Min(value = 1, message = "每页条数最小为1")
    @Max(value = 100, message = "每页条数最大为100")
    private Integer pageSize = 10;
    
    /**
     * 排序字段
     */
    private String orderBy;
    
    /**
     * 是否为升序，true表示升序，false表示降序
     */
    private Boolean isAsc = true;
    
    /**
     * 获取排序SQL
     * 
     * @return 排序SQL
     */
    public String getOrderBySql() {
        if (orderBy == null || orderBy.trim().isEmpty()) {
            return "";
        }
        return orderBy + (isAsc ? " ASC" : " DESC");
    }
}